/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package comunicacao;

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.Vector;
import jogo.JogoServidor;
import util.*;

/**
 *
 * @author Pablo Viana
 */
public class ComunicacaoLocal implements Comunicacao {

    private JogoServidor jogo;

    public ComunicacaoLocal(JogoServidor jogo) {
        this.jogo = jogo;
    }

    // METODOS /////////////////////////////////////////////////////////////////
    private DataInputStream gerarPacote(Vector dados) {
        byte[] bytes = Util.empacotarParametros(dados);
        ByteArrayInputStream input = new ByteArrayInputStream(bytes);
        return new DataInputStream(input);
    }

    // METODOS IMPLEMENTADOS DE COMUNICACAO ////////////////////////////////////
    public DataInputStream retorneStatus(String nome, int partida, int rodada) {
        Vector resposta = null;
        switch (this.jogo.getStatus()) {
            case Constantes.STATUS_ESPERANDO_INICIAR:
                resposta = this.jogo.gerarStatusIniciando(nome);
                break;
            case Constantes.STATUS_ESPERANDO_JOGADA:
                resposta = this.jogo.gerarStatusJogada(nome, partida, rodada);
                break;            
            default:
                resposta = new Vector();
        }
        return this.gerarPacote(resposta);
    }

    public void entrarNoJogo(String nome) {
        this.jogo.conectarJogador(nome);
    }

    public void jogar(Vector dados) throws IOException {
        this.jogo.realizarJogada(this.gerarPacote(dados));
    }
    
    
}
